package com.scs.application.modules.sys.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
* @Description：system. hisCOnfig下所有属性
*/
@Data
@ConfigurationProperties(prefix = "his-config")
@Component
public class HisConfig {

    // 科室配置
    private  DeptConfig deptConfig = new DeptConfig();

    // 人员配置
    private  UserConfig userConfig = new UserConfig();

    // 手术配置
    private  OprtConfig oprtConfig = new OprtConfig();

    // 病人配置
    private  PatientConfig patientConfig = new PatientConfig();

    // 收费项目配置
    private  FeeItemConfig feeItemConfig = new FeeItemConfig();

    // 耗材分类配置
    private  MatrCategoryConfig matrCategoryConfig = new MatrCategoryConfig();

    // 耗材配置
    private  MatrConfig matrConfig = new MatrConfig();

    // 供应商配置
    private  SupplierConfig supplierConfig = new SupplierConfig();

    // 收费明细配置
    private  DeptHisBillConfig deptHisBillConfig = new DeptHisBillConfig();

    // his调价配置
    private  HisPriceAdjustmentConfig hisPriceAdjustmentConfig = new HisPriceAdjustmentConfig();

    // 供应商系统调价配置
    private  HisPriceAdjustmentConfig scpPriceAdjustmentConfig = new HisPriceAdjustmentConfig();


    @Data
    /**
     * @Description：基础配置
     */
    public class BaseConfig {
        /** HISSyncType
         * @Description： 同步类型 view 视图，httpGet httpget请求
         */
        private String syncType = "view";
        /**
         * @Description： 操作名称
         */
        private String title;
        /**
         * @Description： 校验失败提示
         */
        private String checkError;
        /**
         * @Description： 校验sql
         */
        private String checkSql;

        /**
         * @Description： 查询sql-数据同步使用
         */
        private String selectSql;

        /**
         * @Description： 分页查询sql-直接查询his数据视图时使用
         */
        private String pageSelectSql;


        /**
         * @Description： get方式成功标志
         */
        private String getSuccessCode = "10000";


        /**
         * @Description： 状态异常为多少时，进行按天拉取
         */
        private String thresholdCode = "W999999";


        /**
         * @Description： get方式地址 如： http://xx.com  或者 http://xx.com?code=123
         */
        private String getUrl;

        /**
         * @Description： http 请求方式 post get[默认]
         */
        private String getType;

        /**
         * @Description： true 分页查询
         */
        private Boolean getWithPage;

        /**
         * @Description： 分页参数标识
         */
        private String getPageKey;

        /**
         * @Description： 分页参数设置路径
         */
        private String getPageSetPath;


        /**
         * @Description： 结果转化方法
         */
        private String resultConvertFun;


        /**
         * @Description： 查询参数方法
         */
        private String queryParamFun;
    }


    @Data
    /**
     * @Description：科室配置
     */
    public class DeptConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：人员配置
     */
    public class UserConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：手术配置
     */
    public class OprtConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：病人配置
     */
    public class PatientConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：收费项目配置
     */
    public class FeeItemConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：耗材分类配置
     */
    public class MatrCategoryConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description：耗材配置
     */
    public class MatrConfig extends  BaseConfig {
        // true 更新所有视图字段, false: 只更新禁用状态和价格
        private boolean updateAllField = false;
    }

    @Data
    /**
     * @Description 供应商配置
     */
    public class SupplierConfig extends  BaseConfig {
    }

    @Data
    /**
     * @Description 收费明细配置
     */
    public class DeptHisBillConfig extends  BaseConfig {
    }

}
